/*
 * @Author: 华芊芊 huaqianqian@yeah.net
 * @Date: 2023-10-24 14:27:07
 * @LastEditors: 华芊芊 huaqianqian@yeah.net
 * @LastEditTime: 2023-11-09 14:12:03
 * @FilePath: \zmglpt-ui-screen\src\utils\index.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
/**
 * @param {Function} fn 防抖函数
 * @param {Number} delay 延迟时间
 */
export function debounce(fn, delay) {
  var timer;
  return function () {
    var context = this;
    var args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

/**
 * @param {date} time 需要转换的时间
 * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
 */
export function formatTime(time, fmt) {
  if (!time) return '';
  else {
    const date = new Date(time);
    const o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'H+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
      'q+': Math.floor((date.getMonth() + 3) / 3),
      S: date.getMilliseconds(),
    };
    if (/(y+)/.test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        (date.getFullYear() + '').substr(4 - RegExp.$1.length)
      );
    for (const k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length === 1
            ? o[k]
            : ('00' + o[k]).substr(('' + o[k]).length)
        );
      }
    }
    return fmt;
  }
}
/**
 * @param {Number} num 向上取整的数字
 */

export function formatMaxNum(num, bit = 1) {
  let integer = Math.ceil(num)
  let length = String(integer).length
  return Math.ceil(integer / Math.pow(10, length - bit)) * Math.pow(10, length - bit)
}
/**
 * @param {Number} num 向下取整的数字
 */

export function formatMinNum(num, bit = 1) {
  let integer = Math.floor(num)
  let length = String(integer).length
  return Math.floor(integer / Math.pow(10, length - bit)) * Math.pow(10, length - bit)
}

/**
 *  获取前12个月 年月
 */
export function showYear(){
  var dataArr = []
  var data = new Date();
  console.log('123456',data);
  var year = data.getFullYear();
  data.setMonth(data.getMonth()+1, 1)//获取到当前月份,设置月份
  for (var i = 0; i < 13; i++) {
      data.setMonth(data.getMonth() - 1);//每次循环一次 月份值减1
      var m = data.getMonth() + 1;
      m = m < 10 ? "0" + m : m;
      dataArr.unshift(data.getFullYear() + "." + (m))
  }
  console.log('获取前12个月',dataArr);
  return dataArr
}

/**
 * 获取上个月的所属年和上个月
 * @returns {number[]}
 */
export function getPrevMonth(){
  var currentDate = new Date();
  var currentMonth = currentDate.getMonth();
  var currentYear = currentDate.getFullYear();
  var prevMonth, prevYear;

  if (currentMonth === 0) { // 一月份情况
    prevMonth = 12;
    prevYear = currentYear - 1;
  } else {
    prevMonth = currentMonth;
    prevYear = currentYear;
  }
  console.log(prevYear, prevMonth); // 打印上一个月的年份和月份
  return [prevYear, prevMonth]
}

/**
 * 获取当前月的第一天
 */
export function getCurrMonthFirstDay(){
  // 创建一个新的Date对象
  var currDate = new Date();
  // 设置日期为本月第一天
  currDate.setDate(1);
  // 将日期转换成指定格式（yyyy-MM-dd）
  var formattedDate = currDate.toISOString().slice(0, 10).replace(/-/g, '-');
  return formattedDate;
}

/**
 * 获取同期日期
 * @param dateString yyyy-mm-dd
 * @returns {string} yyyy-mm-dd
 */
export function getLastDay(dateString) {
  var date = new Date(dateString); // 将日期字符串转换为Date对象
  date.setFullYear(date.getFullYear() - 1); // 设置当前年份减去1
  return formatDateToString(date); // 调用自定义函数formatDateToString将Date对象转换为日期字符串并返回
}

// 自定义函数，将Date对象转换为指定格式的日期字符串
function formatDateToString(date) {
  var year = date.getFullYear();
  var month = (date.getMonth() + 1).toString().padStart(2, '0');
  var day = date.getDate().toString().padStart(2, '0');
  return `${year}-${month}-${day}`;
}